#if __GNUC__
  #ifndef __x86_64__ 
    #error Must use 64-bits mode to compile this project
  #endif
  
  #if __GNUC__ < 5    // GCC5.0  以下
    #error Must use gcc 5.0 and later version
  #endif

#else
  #error Must use gcc to compile this project  
#endif

#ifndef __SIZEOF_INT128__
  #error Must use gcc to compile this project  
#endif

// GCC 4.6 and later has a __int128 / unsigned __int128 defined as a built-in type. Use
#define int128_t __int128 
#define uint128_t unsigned __int128

extern uint128_t uint128_div_v0_bitbybit(uint128_t n, uint128_t d); 

extern uint128_t uint128_div_v1_asm(uint128_t n, uint128_t d); 

extern uint128_t uint128_div_v2_asm(uint128_t n, uint128_t d); 
